#ifndef GAMEVIEW_H
#define GAMEVIEW_H

#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QMessageBox>
#include <QFile>
#include <QtGui>

namespace Ui {
class GameView;
}

class GameView : public QWidget
{
    Q_OBJECT

public:
    explicit GameView(QWidget *parent = 0);
    ~GameView();

private:
    Ui::GameView *ui;
    // 游戏面板 存储每个格子的数值
    int board[4][4];
    int judgeMove;  //判断矩阵数据是否发生改变，发生改变则产生随机数
    // “restart”按钮
    QPushButton *restartBtn;
    QPushButton *closeBtn;
    // “score”标签
    QLabel *titleLabel;
    QPushButton *up;
    QPushButton *down;
    QPushButton *left;
    QPushButton *right;
    QPushButton *start;
    // 绘制事件
    void paintEvent(QPaintEvent *);
    // 小格子的宽度和高度
    qreal w, h;
    int getBitCount(int);
    void display();
//    QLabel *number1;
//    QLabel *number2;
//    QLabel *number3;
//    QLabel *number4;
//    QLabel *number5;
//    QLabel *number6;
//    QLabel *number7;
//    QLabel *number8;
//    QLabel *number9;
//    QLabel *number10;
//    QLabel *number11;
//    QLabel *number12;
//    QLabel *number13;
//    QLabel *number14;
//    QLabel *number15;
//    QLabel *number16;
private slots:
     void newStart();
     void changMatrixUp();   //点击up键数组改变算法
     void changMatrixDown();   //点击down键数组改变算法
     void changMatrixLeft();   //点击left键数组改变算法
     void changMatrixRight();   //点击right键数组改变算法
     void generateRandom();   //产生随机数

     void gridUp();   //点击up键
     void gridDown();   //点击down键
     void gridLeft();   //点击left键
     void gridRight();   //点击right键

     int sameElment();

};

#endif // GAMEVIEW_H
